#include<cstdio>
#include<iostream>
#include<cstdlib>
using namespace std;
double DIS,C,D;
int n;
double d[10001],p[10001];
void dfs(int now,double price,double leave,double l_p)
{
	if(now==n)
	{
		printf("%.2lf",price);
		exit(0);
	}
	if(d[now]+C*D<d[now+1]) 
	{
		printf("No Solution");
		exit(0);
	}
	if(p[now+1]<p[now])
		dfs(now+1,leave*l_p+((d[now+1]-d[now])/D-leave)*p[now],0,0);
	else
	{
		int z=C*D,i;
		for(i=now+1;i<=n;i++)
			if(d[now]+z<d[i])
				break;
		i--;
		int j;
		for(j=now+1;j<=i;j++)
			if(p[j]<p[now])
				break;
		if(j==i+1) j=i;
		if(j==n+1) j=n;
		if(p[now]<l_p)
		dfs(j,price+(d[j]-d[now])/D*p[now],C-(d[j]-d[now])/D,p[now]);
		else
		{
			double tot=(d[j]-d[now])/D;
			tot-=leave;
			dfs(j,price+tot*p[now]+leave*l_p,C-tot-leave,p[now]);
		}
	}
}
int main()
{
	cin>>DIS>>C>>D>>p[0]>>n;
	for(int i=1;i<=n;i++)
		cin>>d[i]>>p[i];
	d[++n]=DIS;p[n]=1000000;
	dfs(0,0,0,0);
}
